Object-oriented programming (OOP) languages are rapidly replacing the procedure-oriented programming languages that were prevalent in the early 1970's. An object is an encapsulated module of code and related data that is externally accessible only through well-defined and controlled connection points, known as the object's methods and properties. The values of an object's data defines the object's “state.” Another object can determine the first object's state and optionally modify that state by specifying the first object's methods and properties in a message directed to the first object. A collection of objects is created to perform the functions a programmer wants to include in a computer application. The OOP paradigm commonly supports the collection as a hierarchy of interconnected objects in a parent-child tree model.
Various application development environments expose object models whose objects are static in nature. Such objects support a fixed (“inherent”) set of properties/methods and are not extensible by external packages. Existing extension mechanisms require that extensions be provided via fixed property/methods or through collection objects. A logical and a hierarchical extension of the object model requires code, interfaces, typelibaries and computer executables to be changed.
Therefore, there is a need in the art for an extension mechanism that can be bound to a particular object in an application object model to provide functions beyond those that are standard in an application development environment, such as additional methods and/or properties for the objects that form the application. Furthermore, there is a need for an extension mechanism that allows the code for the extension to be dynamically added when the extended function is referenced.